diff --git a/system/application/config/profiler.php b/system/application/config/profiler.php
new file mode 100644
index 0000000..f30432d
--- /dev/null
+++ b/system/application/config/profiler.php
@@ -0,0 +1,17 @@
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------------
+| Profiler Sections
+| -------------------------------------------------------------------------
+| This file lets you determine whether or not various sections of Profiler
+| data are displayed when the Profiler is enabled.
+| Please see the user guide for info:
+|
+|	http://codeigniter.com/user_guide/general/profiling.html
+|
+*/
+
+
+
+/* End of file profiler.php */
+/* Location: ./system/application/config/profiler.php */
\ No newline at end of file
diff --git a/system/core/Output.php b/system/core/Output.php
index ad92acc..0dcf2e4 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -34,6 +34,8 @@
 	var $enable_profiler 	= FALSE;
 	var $parse_exec_vars	= TRUE;	// whether or not to parse variables like {elapsed_time} and {memory_usage}
 
+	var $_profiler_sections = array();
+
 	function CI_Output()
 	{
 		log_message('debug', "Output Class Initialized");
@@ -143,6 +145,25 @@
 	}
 	
 	// --------------------------------------------------------------------
+
+	/**
+	 * Set Profiler Sections
+	 *
+	 * Allows override of default / config settings for Profiler section display
+	 *
+	 * @access	public
+	 * @param	array
+	 * @return	void
+	 */
+	function set_profiler_sections($sections)
+	{
+		foreach ($sections as $section => $enable)
+		{
+			$this->_profiler_sections[$section] = ($enable !== FALSE) ? TRUE : FALSE;
+		}
+	}
+
+	// --------------------------------------------------------------------
 	
 	/**
 	 * Set Cache
@@ -258,7 +279,12 @@
 		if ($this->enable_profiler == TRUE)
 		{
 			$CI->load->library('profiler');				
-										
+			
+			if ( ! empty($this->_profiler_sections))
+			{
+				$CI->profiler->set_sections($this->_profiler_sections);
+			}						
+
 			// If the output data contains closing </body> and </html> tags
 			// we will remove them and add them back after we insert the profile data
 			if (preg_match("|</body>.*?</html>|is", $output))
diff --git a/system/language/english/profiler_lang.php b/system/language/english/profiler_lang.php
index bf21830..7876331 100644
--- a/system/language/english/profiler_lang.php
+++ b/system/language/english/profiler_lang.php
@@ -16,6 +16,7 @@
 $lang['profiler_no_get']		= 'No GET data exists';
 $lang['profiler_no_uri']		= 'No URI data exists';
 $lang['profiler_no_memory']		= 'Memory Usage Unavailable';
+$lang['profiler_no_profiles']	= 'No Profile data - all Profiler sections have been disabled.';
 
 /* End of file profiler_lang.php */
 /* Location: ./system/language/english/profiler_lang.php */
\ No newline at end of file
diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index bf20f17..b2c008f 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -34,22 +34,67 @@
 
 	var $CI;
  	
- 	function CI_Profiler()
+	var $_available_sections	= array(
+										'benchmarks',
+										'config',
+										'controller_info',
+										'get',
+										'http_headers',
+										'memory_usage',
+										'post',
+										'queries',
+										'uri_string'
+										);
+
+ 	function CI_Profiler($config = array())
  	{
  		$this->CI =& get_instance();
  		$this->CI->load->language('profiler');
+		
+		// default all sections to display
+		foreach ($this->_available_sections as $section)
+		{
+			if ( ! isset($config[$section]))
+			{
+				$this->_compile_{$section} = TRUE;
+			}
+		}
+		
+		$this->set_sections($config);
  	}
  	
 	// --------------------------------------------------------------------
 
 	/**
+	 * Set Sections
+	 *
+	 * Sets the private _compile_* properties to enable/disable Profiler sections
+	 *
+	 * @access	public
+	 * @param	mixed
+	 * @return	void
+	 */
+	function set_sections($config)
+	{
+		foreach ($config as $method => $enable)
+		{
+			if (in_array($method, $this->_available_sections))
+			{
+				$this->_compile_{$method} = ($enable !== FALSE) ? TRUE : FALSE;				
+			}
+		}
+	}
+
+	// --------------------------------------------------------------------
+	
+	/**
 	 * Auto Profiler
 	 *
 	 * This function cycles through the entire array of mark points and
 	 * matches any two points that are named identically (ending in "_start"
 	 * and "_end" respectively).  It then compiles the execution times for
 	 * all points and returns it as an array
-	 *
+	 * @PHP4 - all methods should be declared private
 	 * @access	private
 	 * @return	array
 	 */
@@ -438,16 +483,23 @@
 	function run()
 	{
 		$output = "<div id='codeigniter_profiler' style='clear:both;background-color:#fff;padding:10px;'>";
+		$fields_displayed = 0;
+		
+		foreach ($this->_available_sections as $section)
+		{
+			if ($this->_compile_{$section} !== FALSE)
+			{
+				$func = "_compile_{$section}";
+				$output .= $this->{$func}();
+				$fields_displayed++;
+			}
+		}
 
-		$output .= $this->_compile_uri_string();
-		$output .= $this->_compile_controller_info();
-		$output .= $this->_compile_memory_usage();
-		$output .= $this->_compile_benchmarks();
-		$output .= $this->_compile_get();
-		$output .= $this->_compile_post();
-		$output .= $this->_compile_queries();
-		$output .= $this->_compile_config();
-		$output .= $this->_compile_http_headers();
+		if ($fields_displayed == 0)
+		{
+			$output .= '<p style="border:1px solid #5a0099;padding:10px;margin:20px 0;background-color:#eee">'.$this->CI->lang->line('profiler_no_profiles').'</p>';
+		}
+		
 		$output .= '</div>';
 
 		return $output;
